/******************************************************************************* * Copyright (c) 2008, 2012 Versant Corp and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Markus Alexander Kuppe (Versant Corp.) - https://bugs.eclipse.org/248103 ******************************************************************************/ package org.eclipse.ui.tests.session; import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.views.properties.PropertySheet; /** * The secondary property sheets should be closed so there aren't restored in * the next workbench session. * * @since 3.4 */ public class NonRestorablePropertySheetTest extends TestCase { public static TestSuite suite() { TestSuite ts = new TestSuite("org.eclipse.ui.tests.session.NonRestorablePropertySheetTest"); ts.addTest(new NonRestorablePropertySheetTest("test01ActivateView")); ts.addTest(new NonRestorablePropertySheetTest("test02SecondOpening")); return ts; } public NonRestorablePropertySheetTest(String testName) { super(testName); } /** * This is the first part instantiates a bunch of property sheets * * @throws PartInitException */ public void test01ActivateView() throws PartInitException { final IWorkbench workbench = PlatformUI.getWorkbench(); final IWorkbenchPage page = workbench.getActiveWorkbenchWindow() .getActivePage(); IViewPart part = page.showView(IPageLayout.ID_PROP_SHEET); assertNotNull(part); assertTrue(part instanceof PropertySheet); for (int j = 0; j < 3; j++) { try { page.showView(IPageLayout.ID_PROP_SHEET, "#" + j, IWorkbenchPage.VIEW_ACTIVATE); } catch (PartInitException e) { fail(e.getMessage()); } } assertTrue(countPropertySheetViews(page) == 4); } /** * In the second session the property sheet views with secondary ids * shouldn't be instantiated. * * @throws PartInitException */ public void test02SecondOpening() throws PartInitException { final IWorkbench workbench = PlatformUI.getWorkbench(); final IWorkbenchPage page = workbench.getActiveWorkbenchWindow() .getActivePage(); assertTrue(countPropertySheetViews(page) == 1); } // simple counts how many property sheet instances are open private int countPropertySheetViews(final IWorkbenchPage page) { int count = 0; IViewReference[] views = page.getViewReferences(); for (IViewReference ref : views) { if (ref.getId().equals(IPageLayout.ID_PROP_SHEET)) { count++; } } return count; } }